//
//  StatusViewModel.swift
//  Sina
//
//  Created by maling  on 15/11/10.
//  Copyright © 2015年 maling . All rights reserved.
//

import UIKit

//MARK: - 用户视图模型
class StatusViewModel {

    /// 用户模型 -- 属性
    var status: Status
   
    
    //MARK: ============== 属性 =================
    
    /// 用户头像
    var userProfileUrl: NSURL {
        
        return NSURL(string: status.user!.profile_image_url ?? "")!
    }
    /// 默认用户头像
    var userDefaultIconView: UIImage {
        return UIImage(named: "avatar_default_big")!
    }
/// 用户会员图标
    var userMemberImage: UIImage? {
    
        //根据 mbrank 来生成图像
        if status.user?.mbrank > 0 && status.user?.mbrank < 7 {
        
            return UIImage(named: "common_icon_membership_level\(status.user!.mbrank)")
        }
        return nil
    }
    
/// 用户认证图标
    var userVipImage: UIImage? {
    
        //用户认证图标判断 如果没有认证返回 -1
        switch(status.user?.verified_type ?? -1) {
        case 0: return UIImage(named: "avatar_vip")
        case 2, 3, 5: return UIImage(named: "avatar_enterprise_vip")
        case 220: return UIImage(named: "avatar_grassroot")
        default: return nil
        }
    }
    
 /// 表格的可重用表示符号
    var cellId: String {
        return status.retweeted_status != nil ? StatusCellRetweetedId : StatuscellNormalId
    }
    
    
 /// 缓存的行高
    lazy var rowHeight: CGFloat = {
        
        // 1. cell
//        let cell = StatusRetweetedCell(style: .Default, reuseIdentifier:StatuscellNormalId)
        
        // 1. 》 定义一个cell
        var cell: StatusCellTableViewCell
        
        // 根据是否转发微博 决定 cell 的创建
        if self.status.retweeted_status != nil {
        
            cell = StatusRetweetedCell(style: .Default, reuseIdentifier:StatusCellRetweetedId)
        }else{
            cell = StatusRetweetedCell(style: .Default, reuseIdentifier:StatuscellNormalId)

        }
        
        // 2. 返回行高
        return cell.rowHeightBack(self)
        
        }()
    
    /// 如果是原创微博 可以有图，也可以没有图
    /// 如果是转发微博 自己写的一定没有图 retweeted_status(转发的微博) 中可以有图，也可以没有图
    /// 一条微博 最多只有一个 pic_urls 数组
/// 缩略图网络数据 - URL数组，存储型属性
    var thumbnailUrls : [NSURL]?
    
    var retweetedText: String? {
    
        // 1.判断是否是转发微博， 如果不是直接返回 nil
        guard let s = status.retweeted_status else {
            return nil
        }
        // 2. s 就是转发微博
        return "@" + (s.user?.screen_name ?? "") + ":" + (s.text ?? "")
        
    }
    
    
    /// 构造函数
    init(status: Status) {
        self.status = status
        
        // 根据模型 来生成缩略图的数组
//        if status.pic_urls?.count > 0 {
        if let urls = status.retweeted_status?.pic_urls ?? status.pic_urls {
        
            // 创建缩略图数组
            thumbnailUrls = [NSURL]()
            
//            // 遍历字典数组 -》 数组如果可选 不需要遍历， 数组是通过下标来检索数据的
//            for dict in status.pic_urls! {
            for dict in urls{
            
                //因为字典是按照 key 取值 如果 key 错误 会直接返回nil
                let url = NSURL(string: dict["thumbnail_pic"]!)
            
                //相信服务器返回url
                thumbnailUrls?.append(url!)
            }
        }
        
        
    }
    
    // 描述信息
    var description: String {
    
        return status.description + "配图数组 \(thumbnailUrls ?? [] as NSArray)"

    }
    

}